SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spAltadeRendicion] 
@Cuenta int,
@Balance int,
@fecha varchar(10),
@Concepto varchar(50),
@TipoConcepto int,
@Finalidad int,
@Debe varchar(10),
@haber varchar(10),
@Imputacion int,
@Rendicion int,
@Ejercicio int
AS
SET NOCOUNT ON
set dateformat dmy

declare @FFecha datetime
declare @idOrganizacion int
declare @FDebe float
declare @FHaber float

--if @Balance = -1
--	Select @Balance = idBalance from tb_Balances where Cuenta = @Cuenta 	

Select @FFecha = convert(datetime, @fecha)
Select @idOrganizacion = Organizacion from tb_Cuentas, tb_Balances where Cuenta = idCuenta and idBalance = @Balance
Select @FDebe = convert(float, @debe)
Select @FHaber = convert(float, @haber)

if @FDebe < 0 or @FDebe is null
	Select @Fdebe = 0

if @FHaber < 0 or @FHaber is null
	Select @Fhaber = 0

insert tb_RegistroContable (Organizacion, Ejercicio, fEcha, Concepto, TipoConcepto, Finalidad, Proveedor, FacturaODocumento, SaldoAnterior, debe, haber, cuenta, imputacion, rendicion, balance, observaciones)
Select @idOrganizacion, @Ejercicio, @FFecha, @Concepto, @TipoConcepto, @Finalidad, null, null, 0.0, @FDebe, @FHaber, @Cuenta, @Imputacion,
	@Rendicion, @Balance, null


declare @idCuenta int
declare @debeX float
declare @haberX float
declare @saldo float
declare @SaldoAnterior float


	declare cuentas cursor for Select idCuenta from tb_Cuentas where idCuenta = @Cuenta
	declare @idRegistroContable int
	open cuentas

	fetch next from cuentas into @idCuenta

	while @@fetch_status = 0
	begin
		Select @SaldoAnterior = 0
		declare registros cursor for Select debe, haber, saldoAnterior, idRegistroContable from tb_RegistroContable where Cuenta = @idCuenta order by fecha
		open registros
		fetch next from registros into @debeX, @haberX, @saldo, @idRegistroContable
		while @@fetch_status = 0
		begin
			update tb_RegistroContable set saldoAnterior = @saldoAnterior + @HaberX - @DebeX where idRegistroContable = @idRegistroContable
			Select @SaldoAnterior = @saldoAnterior + @HaberX - @DebeX
			fetch next from registros into @debeX, @haberX, @saldo, @idRegistroContable
		end
		close registros
		deallocate registros
		fetch next from cuentas into @idCuenta
	end

	close cuentas
	deallocate cuentas
GO
